import cv2
import numpy as np
image=cv2.imread('weiqi.png')       #读取原图像
cv2.imshow("Input",image)           #显示原图像
img_copy=image.copy()               #复制原图像
#使用中值滤波进行降噪。5表示滤波模板的边长，其值必须为正奇数
blur_copy=cv2.medianBlur(img_copy,5)
gray=cv2.cvtColor(blur_copy,cv2.COLOR_BGR2GRAY)
#使用霍夫变换检测圆。gray为输入的灰度图像，cv2.HOUGH_GRADIENT为检测方法
circles=cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,1,70,param1=100,
                         param2=25,minRadius=10,maxRadius=50)
circles=np.uint(np.around(circles))         #将数组元素四舍五入为整数
for c in circles[0]:                        #遍历每个圆
    x,y,r=c                                 #圆心横坐标，纵坐标和圆半径
    cv2.circle(image,(x,y),r,(255,0,0),3)           #绘制圆
    cv2.circle(image,(x,y),2,(0,0,255),3)           #绘制圆心
cv2.imshow("HoughCircles",image)                  #显示霍夫变换后的图像
cv2.waitKey()
cv2.destroyAllWindows()